package com.masterlu.module.product.dal.mysql.liked;

import com.masterlu.framework.common.pojo.PageResult;
import com.masterlu.framework.mybatis.core.mapper.BaseMapperX;
import com.masterlu.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.masterlu.module.product.controller.admin.liked.vo.ProductLikedPageReqVO;
import com.masterlu.module.product.controller.app.liked.vo.AppLikedPageReqVO;
import com.masterlu.module.product.dal.dataobject.liked.ProductLikedDO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface ProductLikedMapper extends BaseMapperX<ProductLikedDO> {

    default ProductLikedDO selectByUserIdAndCommentId(Long userId, Long commentId) {
        return selectOne(ProductLikedDO::getUserId, userId,
                ProductLikedDO::getCommentId, commentId);
    }

    default PageResult<ProductLikedDO> selectPageByUserAndType(Long userId, AppLikedPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapper<ProductLikedDO>()
                .eq(ProductLikedDO::getUserId, userId)
                .orderByDesc(ProductLikedDO::getId));
    }

    default PageResult<ProductLikedDO> selectPageByUserId(ProductLikedPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<ProductLikedDO>()
                .eqIfPresent(ProductLikedDO::getUserId, reqVO.getUserId())
                .orderByDesc(ProductLikedDO::getId));
    }

    default Long selectCountByUserId(Long userId) {
        return selectCount(ProductLikedDO::getUserId, userId);
    }

}
